package com.opcode.nebulamobil.information.responses.costaresponses;

import com.opcode.nebulamobil.information.responses.JSONResponse;

/**
 * Bu sınıf, siparişi verilen bir yemeğin mutfakta hazırlandığını kullanıcıya bildirmek amacıyla hazırlanmıştır.
 * Mutfak bir yemeği hazırladıktan sonra garsonlara bu sınıfın nesnesini göndererek bildirimde bulunur.
 * @author Okan ERDOĞAN
 * @version	1.0.0
 * @since	com.opcode.costa 1.0.0
 */
public class DeliveryConfirmResp extends JSONResponse{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * Sipariş teslim sorgusu sorulacak olan masanın kimlik numarasını tutacak olan değişkendir.
	 * @since	com.opcode.costa 1.0.0
	 */
	private long tableId;
	
	/**
	 * Masanın adını tutacak olan değişkendir.
	 * @since	com.opcode.costa 1.0.0
	 */
	private String tableName;
	
	/**
	 * Siparişin kimlik numarasıdır.
	 * @since	com.opcode.costa 1.0.0
	 */
	private long orderID;
	
	/**
	 * Sipariş teslimatı ile ilgili mesajı tutacak olan değişkendir.
	 * @since	com.opcode.costa 1.0.0
	 */
	private String message;
	
	/**
	 * Bu mesajın halen geçerli olup olmadığını bildiren bilgiyi taşıyacak olan değişkendir.
	 * Eğer bu değişkenin değeri {@code true} ise ekranda bu dialog açılır. Aksi halde {@code false} ise 
	 * bu dialog kapatılmalıdır.
	 * @since	com.opcode.costa 1.0.0
	 */
	private boolean available;
	
	/**
	 * Dialog un ne kadar süre açık kalacağını bildiren değişkendir.
	 * @since	com.opcode.costa 1.0.0
	 */
	private long waitTime;

	/**
	 * Teslim sorgusunun içerdiği masa kimlik nuamrasını elde etmek için kullanılacak olan uygulamadır.
	 * @return	Geriye masanın kimlik numarası dönecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public long getTableId() {
		return this.tableId;
	}

	/**
	 * Sipariş talebinin masa kimlik numarasını ayarlamak için kullanılacak olan uygulamadır.
	 * @param 	tableId Ayarlanacak olan masa kimlik numarasıdır.
	 * @since	com.opcode.costa 1.0.0
	 */
	public void setTableId(long tableId) {
		this.tableId = tableId;
	}

	/**
	 * Sipariş sorgu mesajını elde etmek için kullanılacak olan uygulamadır.
	 * @return	Geriye sipariş sorgusuna ait mesaj metni dönecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public String getMessage() {
		return this.message;
	}

	/**
	 * Sipariş sorgusuna ait mesajı ayarlamak için kullanılacak olan uygulamadır.
	 * @param 	message Ayarlanacak olan mesaj metnidir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public void setMessage(String message) {
		this.message = message;
	}

	/**
	 * Sipariş talebinin geçerli olma durumunu sorgulamak için kullanılacak olan uygulamadır.
	 * @return	Eğer geçerli ise geriye {@code true} aksi halde geriye {@code false} değeri dönecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public boolean isAvailable() {
		return this.available;
	}

	/**
	 * Sipariş talebinin geçerlilik durumunu ayarlamak için kullanılacak olan uygulamadır.
	 * @param 	available Eğer geçerli ise {@code true} aksi halde {@code false} ayarlanacaktır.
	 * @since	com.opcode.costa 1.0.0
	 */
	public void setAvailable(boolean available) {
		this.available = available;
	}

	/**
	 * Siparişi getirip getirmeme durumunu sorguda tutma süresini elde etmek için kullanılacak olan uygulamadır.
	 * @return	Geriye sorguda kalma süresini döndürecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public long getWaitTime() {
		return this.waitTime;
	}

	/**
	 * Siparişi getirip getirmeme durumu için bekleme süresini ayarlamak için kullanılacak olan uygulamadır.
	 * @param 	waitTime Ayarlanacak olan bekleme süresidir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public void setWaitTime(long waitTime) {
		this.waitTime = waitTime;
	}

	/**
	 * Masanın adını elde etmek için kullanılacak olan uygulamadır.
	 * @return 	Geriye masa adı dönecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public String getTableName() {
		return this.tableName;
	}

	/**
	 * Masanın adını ayarlamak için kullanılacak olan uygulamadır.
	 * @param 	tableName Ayarlanacak olan masa adıdır.
	 * @since	com.opcode.costa 1.0.0
	 */
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}

	/**
	 * Sipariş kimlik numarasını elde etmek için kullanılacak olan uygulamadır.
	 * @return 	Geriye sipariş kimlik numarası dönecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public long getOrderID() {
		return this.orderID;
	}

	/**
	 * Sipariş kimlik numarasını ayarlamak için kullanılacak olan uygulamadır.
	 * @param 	orderID Sipariş kimlik numarası dönecektir.
	 * @since	com.opcode.costa 1.0.0
	 */
	public void setOrderID(long orderID) {
		this.orderID = orderID;
	}

}
